// 引入内置模块：http（创建服务）、fs（文件操作）、path（路径处理）
const http = require('http');
const fs = require('fs').promises; // 使用promises API，支持async/await（异步无阻塞）
const path = require('path');

// 1. 确定要读取的目标文件（命令行参数优先，无参数则读自身）
const targetFile = process.argv[2] ? path.resolve(__dirname, process.argv[2]) : __filename;

// 2. 创建HTTP服务，监听8081端口
const server = http.createServer(async (req, res) => {
  // 仅处理根路径GET请求
  if (req.url === '/' && req.method === 'GET') {
    res.setHeader('Content-Type', 'text/plain; charset=utf-8'); // 避免中文乱码
    try {
      // 异步读取文件（fs.promises.readFile，无回调阻塞）
      const content = await fs.readFile(targetFile, 'utf8');
      // 读取成功：响应文件内容
      res.statusCode = 200;
      res.end(`✅ 文件读取成功（${targetFile}）\n\n${content}`);
    } catch (err) {
      // 读取失败：响应错误信息（如文件不存在）
      res.statusCode = 404;
      res.end(`❌ 错误：${err.message}\n可能原因：文件不存在或无读取权限`);
    }
  } else {
    // 非根路径：404
    res.statusCode = 404;
    res.setHeader('Content-Type', 'text/plain; charset=utf-8');
    res.end('❌ 页面未找到，请访问：http://localhost:8081');
  }
});

// 3. 启动服务
const port = 8081;
server.listen(port, () => {
  console.log(`🚀 服务启动成功！`);
  console.log(`📂 目标文件：${targetFile}`);
  console.log(`🌐 访问地址：http://localhost:${port}`);
});